﻿<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Что нового в Encyclopedia for Developers?</title>
<meta http-equiv="Content-Type" Content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="../styles/styles.css">
</head>
<body>

<h1>Что нового в Encyclopedia for Developers?</h1>
<div class=navbar>
<a href="index.html">главная</a>
</div>

<h3>19 августа 2018 г.</h3>
<ul>
<h3>Минимально необходимая версия Far Manager - <a href="exported_functions/getglobalinfow.html">3.0.0.5258</a>.</h3>
<li><a href="structures/openpanelinfo.html#OPIF_ADDDOTS">OPIF_ADDDOTS</a> добавляет элемент ".." всегда.

</ul>

<h3>21 июня 2018 г.</h3>
<ul>
<h3>Минимально необходимая версия Far Manager - <a href="exported_functions/getglobalinfow.html">3.0.0.5230</a>.</h3>
<li>В <a href="structures/farlistitem.html">FarListItem</a> добавлено поле <code>intptr_t UserData</code> для ассоциирования пользовательских данных с элементом списка.

</ul>

<h3>25 февраля 2018 г.</h3>
<ul>
<h3>Минимально необходимая версия Far Manager - <a href="exported_functions/getglobalinfow.html">3.0.0.5150</a>.</h3>
<li>добавлена стандартная функция <a href="fsf/comparestrings.html">FSF.CompareStrings</a>, заменяющая <code>FSF.LStricmp</code>, <code>FSF.LStrnicmp</code> и позволяющая сортировать строки так же, как и Far (как именно - не оговорено и зависит от настроек)
<li>Описания <code>FSF.LStricmp</code>, <code>FSF.LStrnicmp</code>, <code>FCTL_SETNUMERICSORT</code>, <code>FCTL_SETCASESENSITIVESORT</code>, <code>PFLAGS_NUMERICSORT</code>, <code>PFLAGS_CASESENSITIVESORT</code> удалены.

</ul>

<h3>03 февраля 2015 г.</h3>
<ul>
<h3>Минимально необходимая версия Far Manager - <a href="exported_functions/getglobalinfow.html">3.0.0.4261</a>.</h3>
<li>добавлена стандартная функция <a href="fsf/farclock.html">FSF.FarClock</a> - то же, что <code>Far.UpTime</code> в макросах, но в микросекундах и с микросекундным разрешением
</ul>

<h3>16 октября 2014 г.</h3>
<ul>
<h3>Минимально необходимая версия Far Manager - <a href="exported_functions/getglobalinfow.html">3.0.0.4134</a>.</h3>
<li>добавлен флаг в Editor API: <a href="structures/editorcolor.html#ECF_AUTODELETE">ECF_AUTODELETE</a>
</ul>

<h3>21 июля 2014 г.</h3>
<ul>
<h3>Минимально необходимая версия Far Manager - <a href="exported_functions/getglobalinfow.html">3.0.0.4013</a>.</h3>
<li>добавилась команда ECTL_GETTITLE
</ul>

<h3>21 марта 2014 г.</h3>
<ul>
<h3>Минимально необходимая версия Far Manager - <a href="exported_functions/getglobalinfow.html">3.0.0.3838, релиз</a>.</h3>
<li>добавилось сообщение DM_GETDIALOGTITLE
<li>добавилось сообщение DN_DRAWDLGITEMDONE
<li>добавилось сообщение DN_DROPDOWNOPENED
<li><a href="defs/guid.html">известные GUID</a> диалогов и меню Far Manager
</ul>

<h3>16 ноября 2013 г.</h3>
<ul>
<h3>Минимально необходимая версия Far Manager - <a href="exported_functions/getglobalinfow.html">3.0.0.3714, релиз</a>.</h3>
<li>добавлен тип события в Panel API: <a href="structures/processpaneleventinfo.html#FE_CHANGESORTPARAMS">FE_CHANGESORTPARAMS</a>
</ul>

<h3>30 мая 2013 г.</h3>
<ul>
<h3>Минимально необходимая версия Far Manager - <a href="exported_functions/getglobalinfow.html">3.0.0.3436</a>.</h3>
<li><code>KMFLAGS_DISABLEOUTPUT</code> теперь является значением по умолчанию и игнорируется Far Manager'ом
<li>добавлен новый флаг <code>KMFLAGS_ENABLEOUTPUT<code>
</ul>

<h3>28 апреля 2013 г.</h3>
<ul>
<h3>Минимально необходимая версия Far Manager - <a href="exported_functions/getglobalinfow.html">3.0.0.3371, релиз</a>.</h3>
<li>добавлены команды Info.EditorControl: ECTL_SUBSCRIBECHANGEEVENT, ECTL_UNSUBSCRIBECHANGEEVENT
</ul>

<h3>22 марта 2013 г.</h3>
<ul>
<h3>Минимально необходимая версия Far Manager - <a href="exported_functions/getglobalinfow.html">3.0.0.3265, релиз</a>.</h3>
<li>добавлена команда в Panel API: FCTL_SETACTIVEPANEL
</ul>

<h3>14 декабря 2012 г.</h3>
<ul>
<h3>Минимально необходимая версия Far Manager - <a href="exported_functions/getglobalinfow.html">3.0.0.3013, релиз</a>.</h3>
<li>добавлены флаги в Dialog API: DIF_SEPARATORUSER, DIF_RIGHTTEXT и DIF_WORDWRAP
</ul>

<h3>04 ноября 2012 г.</h3>
<ul>
<h3>Завершился активный этап изменений Plugins API v3.0</h3>
<h3>Минимально необходимая версия Far Manager - <a href="exported_functions/getglobalinfow.html">3.0.0.2927, релиз</a>.</h3>
<li>изменению подверглось подавляющее большинство функций и структур API,<br>
    плагины, <u>написанные для предыдущих версий уникодного Far Manager</u>, требуется адаптировать!<br>
</ul>

<h3>03 Февраля 2011 г.</h3>
<ul>
<h3>Внимание! Начался второй этап изменений Plugins API - версия API теперь v3.0</h3>
</ul>


<h3>01 февраля 2011 г.</h3>
<ul>
<h3>Что изменилось в Plugins API v2.0 в сравнении c Plugins API v1.0</h3>
<li>глобально char/char* заменены на wchar_t/wchar_t*
<li>глобально фиксированные массивы char[n] заменены на указатели wchar_t* на буферы выделяемые плагином
<li>ФАР не использует SetCurrentDirectoryW() при навигации по папкам, как следствие, бонусы:<br>
- хождение по папкам глубже MAX_PATH;<br>
- вход в папки, оканчивающиеся точками, пробелами и прочим;<br>
- папка, открытая на панели, не блокируется от удаления извне;
<li>изменилась синхронизация CurrentDirectory ФАРа:<br>
- команда Info.Control - FCTL_GETCURRENTDIRECTORY переименована в FCTL_GETPANELDIR<br>
- вместо Info.Control - FCTL_GETCURRENTDIRECTORY используйте FSF.GetCurrentDirectory()<br>
- вместо ConvertNameToFullW() используйте FSF.ConvertPath()
<li>описатели CURRENT_PANEL/ANOTHER_PANEL переименованы в PANEL_ACTIVE/PANEL_PASSIVE
<li>функция Info.GetPluginDirList() изменена, вместо INVALID_HANDLE_VALUE используются PANEL_ACTIVE/PANEL_PASSIVE
<li>макроса NM больше нет
<li>структура PluginPanelItem.FindData изменена
<li>проверки на размер PluginPanelItem больше нет
<li>в структуре OpenPluginInfo.InfoPanelLine - массив структур заменён на массив указателей
<li>функция Info.Control() изменена, у ней теперь вместо трёх - ЧЕТЫРЕ параметра!
<li>изменена структура PanelInfo: убраны элементы PanelItems, SelectedItems, ColumnTypes, ColumnWidths, CurDir
<li>команды Info.Control - FCTL_GETPANELSHORTINFO больше нет, её функцию выполняет FCTL_GETPANELINFO
<li>в команде Info.Control - FCTL_GETCMDLINE память под буфер плагин выделяет сам
<li>в команде Info.Control - FCTL_SELECTEDTEXT память под буфер плагин выделяет сам
<li>команда Info.AdvControl - ACTL_GETWCHARMODE удалена
<li>команда Info.AdvControl - ACTL_CONSOLEMODE удалена
<li>команда Info.EditorControl - ECTL_EDITORTOOEM удалена
<li>команда Info.EditorControl - ECTL_OEMTOEDITOR удалена
<li>команда Info.EditorControl - ECTL_SETTITLE, теперь плагин самостоятельно должен восстанавливать "заголовок"
<li>команда FCTL_SETSELECTION изменена на систему команд:<br>
- FCTL_BEGINSELECTION<br>
- FCTL_SETSELECTION<br>
- FCTL_ENDSELECTION
<li>в Info.AdvControl - ACTL_WAITKEY теперь приходят и макрокнопки
<li>в функции Info.Message удалён флаг FMSG_DOWN
<li>память под WindowInfo::TypeName выделяет плагин
<li>память под WindowInfo::Name выделяет плагин
<li>функции FSF.ConvertNameToReal() больше нет
<li>функции FSF.ExpandEnvironmentStr() больше нет
<li>функция FSF.GetDirList() изменена
<li>функция FSF.MkTemp() изменена
<li>функция FSF.GetFileOwner() изменена
<li>функция FSF.FarKeyToName() изменена
<li>функция WINAPI PutFilesW() изменена
<li>функция WINAPI MakeDirectoryW() изменена
<li>функция WINAPI GetFilesW() изменена
<li>флага OPIF_FINDFOLDERS больше нет
<li>структуры FARINT64 больше нет
<li>структуры EditorConvertText больше нет
<li>изменена структура EditorInfo: убран элемент FileName
<li>изменилась системы команд Info.GetDirList/GetPluginDirList и Info.FreeDirList/FreePluginDirList
<li>команда EditorSetParameter - ESPT_GETWORDDIV изменена
<li>таблиц кодировки больше нет, все Table теперь CodePage
<li>плагины в Viewer/Editor могут теперь передавать конкретные кодовые страницы
<li>изменения в Dialog API:<br>
- главное отличие от старого Dialog API, это то, что массив структур FarDialogItem
  является только входным, в него не пишутся изменения при закрытии диалога<br>
- структура FarDialogItem изменена<br>
- функций Dialog() и DialogEx() больше нет<br>
- вместо них DialogInit(), DialogRun(), DialogFree()<br>
- сообщение DM_GETDLGITEM изменено, Param2 указатель на память куда будет скопирован элемент<br>
- событие DN_EDITCHANGE приходит при любых изменениях в строке редактирования<br>
- событие DN_LISTHOTKEY приходит в комбинированный список<br>
- добавилось сообщение DM_GETCONSTTEXTPTR<br>
- добавилось сообщение DM_GETDLGITEMSHORT<br>
- добавилось сообщение DM_SETDLGITEMSHORT<br>
- добавилось сообщение DM_GETDIALOGTITLE<br>
- добавилось сообщение DN_DRAWDLGITEMDONE<br>
- добавилось сообщение DN_DROPDOWNOPENED<br>
- добавился флаг DIF_EDITPATH<br>
- добавился флаг FIB_EDITPATH<br>
- добавился флаг FDLG_KEEPCONSOLETITLE в функции Info.DialogInit()
- флага DIF_NOTCVTUSERCONTROL больше нет<br>
- флага LIF_USETEXTPTR больше нет<br>
- флага MIF_USETEXTPTR больше нет<br>

<li>Плановые изменения в макросах:<br>
- удалена команда $Date - заменить на print(Date("формат"))<br>
- удалена команда $MMode - заменить на mmode(1,2)<br>
- удалено состояние IClip - заменить на clip(5,-1) (при этом учесть, что clip() вернет 1 или 2)<br>
- удалена команда $IClip - заменить на clip(5,0) или просто clip(5)<br>
- удалено состояние DisableOutput (не флаг макроса!) - заменить на вызов функции mmode(1,-1)<br>
- добавлена функция N=mload(S)<br>
- добавлена функция beep()<br>
- добавлена функция kbdLayout()<br>
- удалена команда $KbdSwitch, замените $KbdSwitch на kbdLayout(1)<br>
- функция Menu.ItemStatus() теперь в старшем слове возвращает код символа пометки U+XXXX<br>
- добавлен условный оператор "^^" - XOR, исключающее ИЛИ


<h3>Что добавилось в Plugins API v2.0 в сравнении c Plugins API v1.0</h3>

<li>функция WINAPI ProcessSynchroEventW()
<li>функция FSF.ConvertPath(CPM_REAL,...)
<li>функция FSF.ConvertPath(CPM_FULL,...)
<li>функция FSF.ConvertPath(CPM_NATIVE,...)
<li>функция FSF.GetCurrentDirectory()
<li>команда FSF.MkLink() - FLINK_SYMLINK, автоматически выбрать тип создаваемой символической ссылки
<li>команда Info.AdvControl - ACTL_QUIT
<li>команда Info.AdvControl - ACTL_SETPROGRESSSTATE
<li>команда Info.AdvControl - ACTL_SETPROGRESSVALUE
<li>команда Info.AdvControl - ACTL_SYNCHRO
<li>команда Info.AdvControl - ACTL_KEYMACRO, добавилась команда MCMD_CHECKMACRO
<li>команда Info.AdvControl - ACTL_PROGRESSNOTIFY
<li>команда Info.EditorControl - ECTL_GETFILENAME, плагин сам выделяет память под элемент
<li>команда Info.EditorControl - ECTL_UNDOREDO
<li>команда Info.EditorControl - ESPT_SETBOM
<li>команда Info.Control - FCTL_ISACTIVEPANEL
<li>команда Info.Control - FCTL_GETPANELITEM, плагин сам выделяет память под элемент
<li>команда Info.Control - FCTL_GETSELECTEDPANELITEM, плагин сам выделяет память под элемент
<li>команда Info.Control - FCTL_GETCOLUMNTYPES, плагин сам выделяет память под элемент
<li>команда Info.Control - FCTL_GETCOLUMNWIDTHS, плагин сам выделяет память под элемент
<li>команда Info.Control - FCTL_GETCURRENTDIRECTORY, плагин сам выделяет память под элемент
<li>команда Info.Control - FCTL_GETCURRENTITEM, плагин сам выделяет память под элемент
<li>команда Info.Control - FCTL_CLEARSELECTION
<li>команда Info.Control - FCTL_SETDIRECTORIESFIRST
<li>команда Info.Control - FCTL_GETPANELFORMAT
<li>команда Info.Control - FCTL_GETPANELHOSTFILE
<li>опция в Info.AdvControl - ACTL_GETCONFIRMATIONS - FCS_OVERWRITEDELETEROFILES
<li>опция в Info.AdvControl - ACTL_GETINTERFACESETTINGS - FIS_SHOWTOTALDELPROGRESSINDICATOR
<li>флаг в EditorInfo.Options - EOPT_SHOWWHITESPACE
<li>флаг в EditorInfo.Options - EOPT_BOM
<li>флаг в EditorSetParameter.Type - ESPT_SHOWWHITESPACE
<li>флаг в DI_BUTTON - DIF_SETSHIELD, аналог BCM_SETSHIELD
<li>флаги PFLAGS_USECRC32/OPIF_USECRC32 определяющие, что поле CRC32 элементов панели заполнено
<li>система идентификации диалогов:<br>
- сообщения DN_GETDIALOGINFO/DM_GETDIALOGINFO<br>
- идентификатор для диалога перезаписи файла - {9FBCB7E1-ACA2-475d-B40D-0F7365B632FF}<br>
- идентификатор для диалога поиска (AltF7) - {8C9EAD29-910F-4b24-A669-EDAFBA6ED964}
<li>Far теперь умеет работать в пределах окна (а не буфера), соответственно введены:<br>
- команда Info.AdvControl - ACTL_GETFARRECT<br>
- команда Info.AdvControl - ACTL_GETCURSORPOS<br>
- команда Info.AdvControl - ACTL_SETCURSORPOS
<li>RegExp API
<li>FileFilter API
<li>PluginsControl API
</ul>

<h3>5 Января 2010 г.</h3>
<ul><li>Пишем новое писание.<br>
Все изменения в АПИ (соответственно и в энциклопедии) просим добавлять сюда.
</ul>

</body>
</html>
